#ifndef SL_SCREEN_HPP
#define SL_SCREEN_HPP

// SFML Header
#include <SFML/Graphics.hpp>

// Eigene Header
#include "../System/Singleton.hpp"
#include "WindowSettings.hpp"
#include "../Geometry/Zoomable.hpp"

namespace sl
{
	namespace tmp
	{
		class RenderScreenS : public Singleton<RenderScreenS>, public WindowSettings, public Zoomable
		{
		friend class Singleton<RenderScreenS>;
		public:
			RenderScreenS();
			RenderScreenS(sf::VideoMode mode, const std::string& caption, char style, const sf::ContextSettings& settings);
			~RenderScreenS();

		private:
			sf::RenderWindow myWindow;
			float myZoomLevel;
			unsigned int myFramerate;

		public:
			bool Open();
			sf::RenderWindow* GetWindow();
			RenderScreenS* SetFramerate(unsigned int framerate);
			unsigned int GetFramerate();

		protected:
			RenderScreenS* Zoom(float zoomlevel);

		public:
			sf::RenderWindow* operator()();
		};
	}

	#define RenderScreen tmp::RenderScreenS::GetInstance()
}

#endif //SL_WINDOW_HPP